<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		var a = 3;
		function fn(){
			var a = 6;
			function fn2(){
				return a //6
			}
			return fn2
		}
		console.log(fn()())//6
		/*
			闭包函数:上面这个fn2就是闭包函数，简单理解：可以读取其他函数内部变量的函数。
			如果一个函数访问了他的父级或者父级以上的作用域变量，这个函数也叫闭包函数

			作用：
				1，可以访问函数内部的变量
				2，可以让函数内部的变量保存在内存中  不会轻易被垃圾回收机制回收掉

		*/
		var a = 9;
		function fnn(){
			a = 0;
			return function(b){
				return b + a++
			}
		}

		var f = fnn()
		/*
			f = function(b){
				return b + a++
			}
		*/

		//每次都会递增，因为函数内部的变量存到了内存里，不会被回收掉
		console.log(f(5))
		console.log(f(5))
		console.log(f(5))
	</script>
</body>
</html>